lista.de.pacotes = c("tidyverse","haven","lubridate","janitor","readxl",
                     "stringr","repmis","pander",
                     "tidymodels","jtools","estimatr","GGally",
                     "ordinal","srvyr","ggstatsplot",
                     "flextable","compareGroups","skimr",
                     "magrittr","ggridges","ggpubr","ggstance","ggdark",
                     "hrbrthemes","viridis","extrafont",
                     "dabestr","patchwork",
                     "factoextra","FactoMineR") # escreva a lista de pacotes

novos.pacotes <- lista.de.pacotes[!(lista.de.pacotes %in%
                                      installed.packages()[,"Package"])]
if(length(novos.pacotes) > 0) {install.packages(novos.pacotes)}
lapply(lista.de.pacotes, require, character.only=T)
#rm(lista.de.pacotes,novos.pacotes)
rm(list = ls())
gc()

# Leitura dos dados da pesquisa
setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
df <- haven::read_dta("corona base completa final.dta")

#df2 <- qualtRics::read_survey("data_2205.csv")
#df3 <-  qualtRics::read_survey("df_2205.csv")
#tabyl(df3$Q50)

# verificando potenciais ouliers
df %<>%
  dplyr::filter(Durationinseconds>120,
                Durationinseconds<960)

# labels <- data.frame(label=sjlabelled::get_label(df)) %>%
#   mutate(var=rownames(.)) %>%
#   dplyr::select(var,label)

# Criando variaveis
df %<>%
  mutate(trat_unify_cat = 
           case_when(
             
             trat_unify == 1 ~ "Econ+Saúde",
             trat_unify == 2 ~ "Saúde",
             trat_unify == 3 ~ "Econ",
             trat_unify == 4 ~ "Controle"
           ),
         coron_cat=
           factor(coron,
                  levels = c(1,2,3,4),
                  labels = c("Não conhece\nninguém infectado",
                             "Conhece infectado,\n sem gravidade",
                             "Conhece infectado,\n com gravidade",
                             "Conhece infectado\n que faleceu"),
                  ordered = T),
         coron_cat1=
           factor(coron,
                  levels = c(1,2,3,4),
                  labels = c("Não conhece\nninguém infectado",
                             "Conhece infectado,\n sem gravidade",
                             "Conhece infectado,\n com gravidade",
                             "Conhece infectado,\n com gravidade"),
                  ordered = T),
         ideologia_cat=
           factor(ideologia,
                  levels = c(1,2,3,4,5),
                  labels = c("Esquerda",
                             "Centro-\nEsquerda",
                             "Centro",
                             "Centro-\nDireita",
                             "Direita"),
                  ordered = T),
         ideologia_cat1=
           case_when(
             
             ideologia < 2 ~ "Esquerda",
             ideologia > 4 ~ "Direita",
             TRUE ~ "Centro"
           ),
         ideologia_cat2=
           as.factor(case_when(
             
             ideologia < 3 ~ "Esquerda",
             ideologia > 3 ~ "Direita",
             ideologia == 3 ~ "Centro"
           )),
         ideologia_cat3=
           as.factor(case_when(
             
             ideologia <= 3 ~ "Centro+Esquerda",
             ideologia > 3 ~ "Direita"
           )),
         idade2=forcats::fct_recode(idade,
                                    "18-44"="18-24",
                                    "18-44"="25-34",
                                    "18-44"="35-44",
                                    "45+"="45-54",
                                    "45+"="55-65",
                                    "45+"="Acima de 65"),
         prejuizo=
           factor(preju,
                  levels = c(1,2,3,4,5),
                  labels = c("Nenhum\nprejuízo",
                             "Pequeno\nprejuízo",
                             "Médio\nprejuízo",
                             "Grande\nprejuízo",
                             "Total\nprejuízo"),
                  ordered = T),
         renda = forcats::fct_relevel(renda,
                                      "",
                                      "Prefiro não responder",
                                      "Menos de R$ 1.045,00",
                                      "De R$ 1.045,00 a R$ 3.135,00",
                                      "De R$ 3.135,00 a R$ 5.225,00",
                                      "De R$ 5.225,00 a R$ 10.450,00",
                                      "Mais de R$ 10.450,00" ), 
         renda_cat = factor(case_when(
           renda=="" ~ NA_character_,
           renda=="Prefiro não responder" ~ NA_character_,
           renda== "Menos de R$ 1.045,00"~ "Até 3SM",
           renda=="De R$ 1.045,00 a R$ 3.135,00"~"Até 3SM",
           renda=="De R$ 3.135,00 a R$ 5.225,00"~"De 3 a 5SM",
           renda=="De R$ 5.225,00 a R$ 10.450,00"~"De 5 a 10SM",
           renda=="Mais de R$ 10.450,00"~"Mais de 10SM")),
         renda_agg = forcats::fct_recode(renda,
                                         "Sem info"="",
                                         "Sem info"="Prefiro não responder",
                                         "Menos de 5.2k"= "Menos de R$ 1.045,00",
                                         "Menos de 5.2k"="De R$ 1.045,00 a R$ 3.135,00",
                                         "Menos de 5.2k"="De R$ 3.135,00 a R$ 5.225,00",
                                         "De 5.2k a 10.4k"="De R$ 5.225,00 a R$ 10.450,00",
                                         "Mais de 10.4k"="Mais de R$ 10.450,00" ),
        resp_controle = factor(
          case_when( 
         respon== 1 ~ "OMS",
         respon== 2 ~ "Presidente",
         respon== 3 ~ "Governador",
         respon== 4 ~ "Prefeito",
         respon== 5 ~ "Congresso",
         ))
        
  )

## LIMPEZA ##
# Limpando por IPs muito repetidos
df_ <- df %>% 
  janitor::get_dupes(IPAddress) %>%
  group_by(IPAddress) %>%
  mutate(n1=1,n=cumsum(n1)) %>%
  ungroup() %>%
  mutate(dupli=case_when(
    (dupe_count > 3 & n > 1) ~ 1,
    TRUE ~ 0)) %>%
  dplyr::filter(dupli==1) 

df <- anti_join(df,df_)
rm(df_)


# filtrando apenas direita
drt.df <- df %>%
  dplyr::filter(ideologia>3)

### Modelagem ----
mod.df <- drt.df %>%
  mutate(covid = factor(coron,
                        levels = c(1,2,3,4),
                        labels = c("livre",
                                   "leve",
                                   "grave",
                                   "morte")),
         preju_d = case_when(
           prejuizo %in% c("Nenhum\nprejuízo",
                           "Pequeno\nprejuízo",
                           "Médio\nprejuízo",
                           "Grande\nprejuízo") ~ "Parcial",
           prejuizo %in% c("Total\nprejuízo") ~ "Total"
         ),
         covid_n = as.numeric(covid),
         prejuizo = as.numeric(preju),
         isolamento = as.numeric(favor_isol),
         bolsonaro = as.numeric(trabbolso),
         governadores= as.numeric(trabgov),
         trat=as.factor(trat_unify),
         tempo=as.numeric(time)) %>%
  dplyr::select(isolamento,tempo,governadores,bolsonaro,
                preju_d,prejuizo,
                covid,covid_n,
                sexo,renda=renda_cat,idade=idade2,trabbolso
  ) %>%
  drop_na()


#df_split <- initial_split(mod.df)
#df_train <- training(df_split)
#df_test  <- testing(df_split)

f1a = isolamento ~ covid # bom
f1b = isolamento ~ covid_n
#f2a = isolamento ~ covid+prejuizo
#f2b = isolamento ~ covid+preju_d # bom
#f2c = isolamento ~ covid_n+prejuizo
#f2d = isolamento ~ covid_n+preju_d # bom
#f3a = isolamento ~ covid*prejuizo
f3b = isolamento ~ covid_n*preju_d # bom
#f3c = isolamento ~ covid_n*prejuizo 
f3d = isolamento ~ covid*preju_d # bom
#f4a = isolamento ~ covid*prejuizo + sexo + renda + idade
f4b = isolamento ~ covid_n*preju_d + sexo + renda + idade # bom
#f4c = isolamento ~ covid_n*prejuizo + sexo + renda + idade 
f4d = isolamento ~ covid*preju_d + sexo + renda + idade # bom

fit1 <- mod.df %>% lm(formula = f3b)
fit2 <- mod.df %>% lm(formula = f3d)
fit3 <- mod.df %>% lm(formula = f4b)
fit4 <- mod.df %>% lm(formula = f4d)

fit5 <- mod.df %>% lm(formula = tempo ~ covid*preju_d + sexo + renda + idade)
fit6 <- mod.df %>% lm(formula = bolsonaro ~ covid*preju_d + sexo + renda + idade)
fit7 <- mod.df %>% lm(formula = governadores ~ covid*preju_d + sexo + renda + idade)

#plot_summs(fit1,fit2,fit3,fit4,fit_clm,fit_clm2)
#jtools::export_summs(fit1,fit2,fit3,fit4)
# plot_summs(fit4,fit5,fit6,fit7,model.names = c("Isolamento",
#                                                "Tempo de\nIsolamento",
#                                                "Apoio a\nBolsonaro",
#                                                "Apoio a\nGovernadores")) +
#   theme(legend.position = "bottom")

fit_clm <- clm(as.factor(isolamento) ~ covid_n*preju_d + sexo + renda + idade,data = mod.df)
fit_clm2 <- clm(as.factor(isolamento) ~ covid*preju_d + sexo + renda + idade,data = mod.df)

fit_log <- glm(data = mod.df %>% 
                 mutate(isolamento=case_when(
                   as.numeric(isolamento)==1 ~ 1,
                   as.numeric(isolamento)==2 ~ 1,
                   #     as.numeric(favor_isol)==3 ~ "indifere",
                   as.numeric(isolamento)==4 ~ 0,
                   as.numeric(isolamento)==5 ~ 0,
                 )) %>% tidyr::drop_na(),
               isolamento ~ covid_n*preju_d + sexo + renda + idade, family = binomial)

fit_log2 <- glm(data = mod.df %>% 
                  mutate(isolamento=case_when(
                    as.numeric(isolamento)==1 ~ 1,
                    as.numeric(isolamento)==2 ~ 1,
                    #     as.numeric(favor_isol)==3 ~ "indifere",
                    as.numeric(isolamento)==4 ~ 0,
                    as.numeric(isolamento)==5 ~ 0,
                  )) %>% tidyr::drop_na(),
                 isolamento ~ covid*preju_d + sexo + renda + idade, family = binomial)


rm(f1a,f1b,f2a,f2b,f2c,f2d,f3a,f3b,f3c,f3d,f4a,f4b,f4c,f4d)


# MCA ----
mca <- df %>%
  transmute(
    ResponseID = ResponseID,
    ideologia = ideologia_cat,
    ideologia2 = ideologia_cat2,
    bolsonaro = factor(case_when(
      as.numeric(trabbolso)==1 ~ "contra_bolsonaro",
      as.numeric(trabbolso)==2 ~ "contra_bolsonaro",
    #  as.numeric(trabbolso)==3 ~ "indifere",
      as.numeric(trabbolso)==4 ~ "favor_bolsonaro",
      as.numeric(trabbolso)==5 ~ "favor_bolsonaro",
    )),
    governadores=factor(case_when(
      as.numeric(trabgov)==1 ~ "contra_governadores",
      as.numeric(trabgov)==2 ~ "contra_governadores",
  #    as.numeric(trabgov)==3 ~ "indifere",
      as.numeric(trabgov)==4 ~ "favor_governadores",
      as.numeric(trabgov)==5 ~ "favor_governadores",
    )),
    isolamento=factor(case_when(
      as.numeric(favor_isol)==1 ~ "contra_isolamento",
      as.numeric(favor_isol)==2 ~ "contra_isolamento",
 #     as.numeric(favor_isol)==3 ~ "indifere",
      as.numeric(favor_isol)==4 ~ "favor_isolamento",
      as.numeric(favor_isol)==5 ~ "favor_isolamento",
    ),
  )
) %>% dplyr::filter(ideologia!="Centro") %>%
  tidyr::drop_na()

res.mca <- MCA(mca %>% dplyr::select(-ResponseID,-ideologia) ,graph = FALSE)


res.mca_direita <- MCA(mca %>% dplyr::select(-ResponseID,-ideologia2) %>%
                          dplyr::filter(ideologia %in% 
                                          c("Centro-\nDireita","Direita")),
                       graph = FALSE)



rm(mca)

## Dados internacionais de popularidade
library(rvest)
library(textclean)
library(ggrepel)
# Lendo meu html do highchart 
pop.df <- read_html("mc_data.html") %>% 
  html_nodes("svg")  %>% 
  html_nodes("g") %>% 
  html_nodes("path") %>% xml_attr("aria-label") %>%
  tibble() %>%
  dplyr::rename(data=".") %>%
  drop_na() %>%
  mutate(data=replace_html(mgsub(data,c(".",",","%","  ","Lopez "),c("","",""," ","")))) %>% 
  #  mutate(data=gsub(", "," ",data)) %>%
  separate(col=1,sep = " ",extra="merge",
           into = c("n","sem","mes","dia","ano","Apr","Pres")) %>%
  dplyr::mutate(n=as.numeric(n),Apr=as.numeric(Apr),
                Reg = case_when(
                  Pres %in% c("Abe","Bolsonaro","Modi","Obrador",  
                              "Trudeau","Trump") ~ "América e Ásia",
                  Pres %in% c("Johnson","Macron","Merkel","Morrison") ~ "Europa e Oceania",
                ))


# Salvandndo env ----
source("funcao_ggdens.R")

save.image("data_covid.RData")
